package com.googlecode.vanaraha.data
import com.googlecode.vanaraha.utils.Utils._

@serializable trait Issue {
  def isSingleFileIssue = true
  def isMultipleFileIssue = true
  def issueSource: SourceFile  = throw new UnsupportedOperationException()
  def issueSources: Array[SourceFile] = throw new UnsupportedOperationException()
}

@serializable trait IssueSummary{
  
}

case class DuplicateCheckSummary(duplicateFileCount: Int, duplicateLineCount: Int, duplicateLinePercentage: Int,
                                 totalFileCount: Int, totalRawLineCount: Int, totalSignificantLineCount:Int,
                                 processingTime: Long) extends IssueSummary

abstract class SingleFileIssue(override val issueSource: SourceFile) extends Issue{
  override def isMultipleFileIssue = false
}
abstract class MultipleFileIssue(override val issueSources: Array[SourceFile]) extends Issue{
  override def isSingleFileIssue = true
}

